The present invention relates generally to the field of error detection and correction, and more particularly to dynamically eliminating corrupted portions of cache during runtime.
A cache is a component that transparently retains data elements (or simply data) so that future requests for any retained data can be served faster. A data element that is stored within a cache corresponds to a pre-defined storage location within a computer memory system. Such a data element might be a value that has recently been computed or a duplicate copy of the same data element that is also stored elsewhere. If requested data is contained in the cache, this is a cache hit, and the request can be served by simply reading the cache, which is comparatively faster than accessing other storage locations because the cache is usually built close to the respective requester. If the data is not contained in the cache, this is a cache miss, and the data is fetched from higher level cache or system memory (other storage medium) not necessarily as close to the requester, and thus comparatively slower than a cache hit. In general, the greater number of requests that can be served from the cache, the faster the overall system performance.
To ensure the validity of data in the cache, error detection and correction schemes can be used to check the data for errors. Error detection and correction schemes can be either systematic or non-systematic. In a systematic scheme, the transmitter sends the original data and attaches a fixed number of check bits (or parity data) which are derived from the data bits by some deterministic algorithm. If only error detection is required, a receiver can simply apply the same algorithm to the received data bits and compare its output with the received check bits. If the values do not match, an error has occurred at some point.